输入一个字符串(包括大小写字母和空格),除去空格输出在字符串中出现过的字符。
输入格式:
输入一个字符串
输出格式:
输出在字符串中出现过的字符,每个字符打印一次,按字母顺序打印(注意:空格不算,大小写字符算不同字符)。打印时按字母的顺序,大写在前,小写在后。
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
思路
getline(cin,s)接收一行字符串,可以接收空格并输出
遍历一遍erase函数删除空格
大小写字母ASCII码范围:a-z:97-122 A-Z:65-90
因题目要求打印时按字母的顺序,大写在前,小写在后,
所以用sort函数根据字母ASCII码值排序,可得:Taadghhiioosst
因每个字符打印一次,所以删除排序后相邻的重复字符即可
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include<iostream> #include<cstring> #include<algorithm> using namespace std; int main(){ string s; getline(cin,s); for(int i=0;i<s.size();i++){ if(s[i]==' ') s.erase(i,1); } sort(s.begin(),s.end()); char pre=' '; for(int i=0;i<s.size();i++){ if(s[i]!=pre) cout<<s[i]; pre=s[i]; } return 0; }
|
另一种方法:标记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <iostream>
using namespace std;
int main() { string str; getline(cin,str); bool book[200]={false}; for(char it:str){ book[(int)it]=true; } for(int i='A';i<='Z';i++){ if(book[i]){ printf("%c",i); } } for(int i='a';i<='z';i++){ if(book[i]){ printf("%c",i); } } return 0; }
|